package com.coded2.mobileposto.bean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.enterprise.context.SessionScoped;
import javax.faces.model.SelectItem;
import javax.inject.Inject;
import javax.inject.Named;

import sun.text.normalizer.NormalizerBase.Mode;

import com.coded2.infra.comum.UtilBean;
import com.coded2.infra.util.Util;
import com.coded2.mobileposto.model.Consumo;
import com.coded2.mobileposto.model.Fabricante;
import com.coded2.mobileposto.model.Modelo;
import com.coded2.mobileposto.service.ModeloService;


@Named
@SessionScoped
public class ModeloBean implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	@Inject
	private ModeloService service;
	
	private List<SelectItem> frabricantes;	
	private Modelo modelo;
	private Modelo potencia;
	
	private List<Modelo> modelos;
	
	public String list() throws Exception{
		setModelo(null);
		setPotencia(null);
		setModelos(null);
		
		setModelos(service.search(getModelo()));
		
		return "/view/manterModelo/list.xhtml"; 
	}
	
	public String create(){
		setModelo(null);
		setPotencia(null);
		setFrabricantes(null);
		
		return "/view/manterModelo/create.xhtml";
	}

	public String save(){
		List<String> erros = service.save(getModelo());
		if (erros!=null && !erros.isEmpty()){
			for (String erro:erros){
				UtilBean.addErrorMessage(erro);
				}
			return UtilBean.ACTION_CREATE;
		}
		UtilBean.addInfoMessage("Registro gravado com sucesso");
		return UtilBean.ACTION_EDIT;
	}
	
	public String update(){
		List<String> erros = service.update(getModelo());
		
		if (erros!=null && !erros.isEmpty()){
			for (String erro:erros){
				UtilBean.addErrorMessage(erro);
				}
		}
		UtilBean.addInfoMessage("Registro alterado com sucesso");
		
		return UtilBean.ACTION_EDIT;
	}
	
	public String remove(){
		
		List<String> erros = service.remove(getModelo());
		return UtilBean.ACTION_LIST;
	}
	
	public String edit() throws Exception{
		setModelo(service.searchByID(modelo));
		
		return UtilBean.ACTION_EDIT;
	}
	
	public Modelo getModelo() {
		if(this.modelo==null){
			modelo = new Modelo();
		}
		return modelo;
	}

	public void setModelo(Modelo modelo) {
		this.modelo = modelo;
	}
	
	public Modelo getPotencia() {
		if(this.potencia==null){
			potencia = new Modelo();
		}
		return modelo;
	}

	public void setPotencia(Modelo potencia) {
		this.potencia = potencia;
	}

	public List<Modelo> getModelos() {
		if(this.modelos==null){
			modelos = new ArrayList<Modelo>();
		}
		return modelos;
	}

	public void setModelos(List<Modelo> modelos) {
		this.modelos = modelos;
	}

	public List<SelectItem> getFrabricantes() throws Exception {
		setFrabricantes(null);
		frabricantes = UtilBean.convertToSelectItem(service.recuperaFabricantes(), "noFabricante", "idFabricante");
		return frabricantes;
	}

	public void setFrabricantes(List<SelectItem> frabricantes) {
		this.frabricantes = frabricantes;
	}
}
